<!doctype html>
<html class="default light">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>ForgeFed</title>
    <link rel="stylesheet" type="text/css" href="/theme.css" />
  </head>
  <body class="body">
    <header class="header">
      <h1 class="header-title">
        <a class="header-title__link" href="/">
            <img src="/logo-with-name.svg" alt="ForgeFed" title="ForgeFed" />
        </a>
      </h1>
      <nav class="nav">
        <a class="nav__link"
           href="/forgefed.html">🗲 behavior</a>
        <a class="nav__link"
           href="/forgefed-vocabulary.html">📓 vocabulary</a>
        <a class="nav__link"
           href="https://notabug.org/peers/forgefed/issues">🐞 issues</a>
        <a class="nav__link"
           href="https://talk.feneas.org/c/forgefed">🗪 forum</a>
        <a class="nav__link"
           href="/index/dark.html">🌑</a>
      </nav>
    </header>
    <main class="main">
              <h1 class="main-title">
            ForgeFed - draft - 2019-10-05 master
            <a href="https://notabug.org/peers/forgefed/commit/743855aa55c134dcafa391d84f31024b5e3921b3">
                743855a
            </a>
                    </h1>
      
              <nav class="toc">
            <header class="toc-title">Table of Contents</header>
            <ul>
            <li><a href="#abstract"><span class="toc-section-number">1</span> Abstract</a></li>
            <li><a href="#status-of-this-document"><span class="toc-section-number">2</span> Status of This Document</a></li>
            <li><a href="#overview"><span class="toc-section-number">3</span> Overview</a></li>
            <li><a href="#conformance"><span class="toc-section-number">4</span> Conformance</a></li>
            <li><a href="#objects"><span class="toc-section-number">5</span> Objects</a></li>
            <li><a href="#actors"><span class="toc-section-number">6</span> Actors</a></li>
            <li><a href="#client-to-server-interactions"><span class="toc-section-number">7</span> Client to Server Interactions</a><ul>
            <li><a href="#follow-activity"><span class="toc-section-number">7.1</span> Follow Activity</a></li>
            <li><a href="#push-activity"><span class="toc-section-number">7.2</span> Push Activity</a></li>
            </ul></li>
            <li><a href="#server-to-server-interactions"><span class="toc-section-number">8</span> Server to Server Interactions</a><ul>
            <li><a href="#follow-activity-1"><span class="toc-section-number">8.1</span> Follow Activity</a></li>
            </ul></li>
            <li><a href="#acknowledgements"><span class="toc-section-number">9</span> Acknowledgements</a></li>
            </ul>
        </nav>
      
      <p><strong>Editors:</strong></p>
      <ul>
      <li>fr33domlover</li>
      <li>zPlus</li>
      <li>... add other editors</li>
      </ul>
      <p><strong>Repository:</strong></p>
      <ul>
      <li><a href="https://notabug.org/peers/forgefed">NotABug</a></li>
      </ul>
      <p><strong>Copyright:</strong></p>
      <p>2019 ...</p>
      <h1 id="abstract"><span class="header-section-number">1</span> Abstract</h1>
      <p>This document describes the ForgeFed protocol. ForgeFed is an extension of the <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a> protocol for delivering notifications and content for federation of version control systems. The purpose of this specification is to describe a protocol that can be integrated into source code management for enabling collaboration across different platforms.</p>
      <h1 id="status-of-this-document"><span class="header-section-number">2</span> Status of This Document</h1>
      <h1 id="overview"><span class="header-section-number">3</span> Overview</h1>
      <p>ForgeFed is an extension of <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a> and follows the same &quot;actors&quot; model, with a client-to-server protocol and a server-to-server protocol.</p>
      <h1 id="conformance"><span class="header-section-number">4</span> Conformance</h1>
      <p>The key words MAY, MUST, MUST NOT, SHOULD, and SHOULD NOT are to be interpreted as described in [RFC2119].</p>
      <h1 id="objects"><span class="header-section-number">5</span> Objects</h1>
      <p>Objects are the core concept around which both ActivityPub and ForgeFed are built. Examples of Objects are Note, Ticket, or Image. Objects are wrapped in Activities, a subtype of Object that describes some form of action that may happen, is currently happening, or has already happened. Examples of Activities are Create, Delete, or Follow.</p>
      <h1 id="actors"><span class="header-section-number">6</span> Actors</h1>
      <p>A ForgeFed implementation MUST provide an Actor of type <code>Repository</code> for every repository that should support federation.</p>
      <p>A ForgeFed implementation SHOULD provide an Actor of type <code>Person</code> for every user of the platform.</p>
      <h1 id="client-to-server-interactions"><span class="header-section-number">7</span> Client to Server Interactions</h1>
      <p>ForgeFed uses Activities for client to server interactions, as described by ActivityPub. A client will send objects (eg. a Ticket) wrapped in a Activity (eg. Create) to an actor's outbox, and in turn the server will take care of delivery.</p>
      <h2 id="follow-activity"><span class="header-section-number">7.1</span> Follow Activity</h2>
      <p>The Follow activity is used to subscribe to the activities of a Repository. The client MUST send a Follow activity the a Person's outbox. The server in turn delivers the message to the destination inbox.</p>
      <h2 id="push-activity"><span class="header-section-number">7.2</span> Push Activity</h2>
      <p>The Push activity is used to notify followers when somebody has pushed changes to a Repository. The client MUST send a Push activity the a Repository's outbox. The server in turn delivers the message to the Repository followers.</p>
      <h1 id="server-to-server-interactions"><span class="header-section-number">8</span> Server to Server Interactions</h1>
      <h2 id="follow-activity-1"><span class="header-section-number">8.1</span> Follow Activity</h2>
      <p>The server receiving a Follow activity in a Repository's inbox SHOULD add the sender actor to the Repository's followers collection.</p>
      <h1 id="acknowledgements"><span class="header-section-number">9</span> Acknowledgements</h1>
    </main>
    <footer class="footer">
      <p xmlns:dct="http://purl.org/dc/terms/">
        <a rel="license"
           href="http://creativecommons.org/publicdomain/zero/1.0/">
          <img src="https://licensebuttons.net/p/zero/1.0/88x31.png"
               style="border-style: none;"
               alt="CC0" />
        </a>
        <br />
        <a rel="dct:publisher" href="https://peers.community">
          <span property="dct:title">The ForgeFed team</span>
        </a>
        has dedicated all copyright and related and neighboring
        rights to
        <span property="dct:title">ForgeFed</span> to the public domain
        worldwide.
      </p>
      <p>❤ Copying is an act of love. Please copy, reuse and share!</p>
      <p>
        Site generated by
        <a class="footer__link" href="https://pandoc.org">pandoc</a>.
      </p>
    </footer>
  </body>
</html>
